package com.skyd.core.game.td;

import java.util.concurrent.CopyOnWriteArrayList;

import com.skyd.core.game.IGameMapPiece;
import com.skyd.core.vector.Vector2DF;

/**
 * 地图块接口
 * @author SkyD
 *
 */
public interface ITDMapPiece extends IGameMapPiece,ITDEntity {

	/**
	 * 获取是否允许建造
	 * @return
	 */
	public boolean getIsAllowBuild();
	
	/**
	 * 获取尺寸
	 * @return
	 */
	public Vector2DF getSize();
	
	/**
	 * 设置是否允许建造
	 * @param value 值
	 */
	public void setIsAllowBuild(boolean value);
	
	/**
	 * 获取表面上的塔
	 * @return
	 */
	public CopyOnWriteArrayList<ITDTower> getSurfaceTowers();
	/**
	 * 获取表面上的生物
	 * @return
	 */
	public CopyOnWriteArrayList<ITDBiont> getSurfaceBiont();
	/**
	 * 获取表面上的演员
	 * @return
	 */
	public CopyOnWriteArrayList<ITDActor> getSurfaceActors();
	
	/**
	 * 添加地图表面情况改变监听器
	 * @param listener 监听器
	 */
	public void addOnSurfaceChangeListener(ITDMapPieceSurfaceChangeListener listener);
	/**
	 * 放置塔
	 * @param t 塔
	 * @return 是否放置成功
	 */
	public boolean putTower(ITDTower t);
	/**
	 * 规划到目标地图块的路线
	 * @param target 目标
	 * @param containSelfPosion 包含自身的坐标
	 * @param ignoreHinder 忽略障碍
	 * @return 行进路线
	 */
	public CopyOnWriteArrayList<Vector2DF> planningRoute(ITDMapPiece target,boolean containSelfPosion,boolean ignoreHinder);
	
}
